// 任一大于2的偶数都可写成两个素数之和
#include <bits/stdc++.h>
using namespace std;
const int N = 10000000 + 10;
int n, cnt;
int prime[N / 2];
bool v[N];
int main() {
  v[0] = 1, v[1] = 1;
  for (int i = 1; i < N; ++i) {
    if (!v[i]) prime[++cnt] = i;
    for (int j = 1; j <= cnt && i * prime[j] < N; ++j) {
      v[i * prime[j]] = 1;
      if (i % prime[j] == 0) break;
    }
  }
  while (scanf("%d", &n) == 1) {
    if (n < 8)
      puts("Impossible.");
    else {
      if (n % 2 == 0) {
        n -= 4;
        for (int i = 1; i <= cnt; ++i) {
          if (!v[prime[i]] && !v[n - prime[i]]) {
            printf("2 2 %d %d\n", prime[i], n - prime[i]);
            break;
          }
        }
      } else {
        n -= 5;
        for (int i = 1; i <= cnt; ++i) {
          if (!v[prime[i]] && !v[n - prime[i]]) {
            printf("2 3 %d %d\n", prime[i], n - prime[i]);
            break;
          }
        }
      }
    }
  }
}
